package com.bmob.lover.viewmodel

import com.kunminx.architecture.ui.callback.ProtectedUnPeekLiveData
import com.kunminx.architecture.ui.callback.UnPeekLiveData
import com.bmob.lover.app.util.CacheUtil
import com.bmob.lover.app.util.getCurrentUser
import com.bmob.lover.data.model.bean.LoverBind
import com.bmob.lover.data.model.bean.User
import com.theone.mvvm.base.viewmodel.BaseViewModel

//  ┏┓　　　┏┓
//┏┛┻━━━┛┻┓
//┃　　　　　　　┃
//┃　　　━　　　┃
//┃　┳┛　┗┳　┃
//┃　　　　　　　┃
//┃　　　┻　　　┃
//┃　　　　　　　┃
//┗━┓　　　┏━┛
//    ┃　　　┃                  神兽保佑
//    ┃　　　┃                  永无BUG！
//    ┃　　　┗━━━┓
//    ┃　　　　　　　┣┓
//    ┃　　　　　　　┏┛
//    ┗┓┓┏━┳┓┏┛
//      ┃┫┫　┃┫┫
//      ┗┻┛　┗┻┛
/**
 * @author The one
 * @date 2021-04-22 13:51
 * @describe TODO
 * @email 625805189@qq.com
 * @remark
 */
class AppViewModel : BaseViewModel() {

    //App的账户信息
    private val userInfo = UnPeekLiveData.Builder<User>().setAllowNullValue(true).create()

    private val loverBind = UnPeekLiveData.Builder<LoverBind>().setAllowNullValue(true).create()

    fun getUserInfoLiveData(): ProtectedUnPeekLiveData<User> = userInfo
    fun getLoverBindLiveData(): ProtectedUnPeekLiveData<LoverBind> = loverBind
    fun getLoverInfo():User? = loverBind.value?.getBindLover(userInfo.value)

    fun setUserInfo(user: User?) {
        userInfo.value = user
        CacheUtil.setUser(user)
    }

    fun setLoverBind(bind: LoverBind?) {
        loverBind.value = bind
        CacheUtil.setLoverBind(bind)
    }

    init {
        userInfo.value = getCurrentUser()
        loverBind.value = CacheUtil.getLoverBind()
    }

}